Data transmission rates between nodes of a flow controlled fabric may be managed using various flow control techniques. For instance, if the rate of data transmission from a sending node is faster than the rate at which a receiving node can accept it, the receiving node may send a message to the sending node instructing it to temporarily stop transmission until it can catch up to speed.
One example of a flow control technique is Ethernet flow control. This technique involves stopping and resuming the transmission of data between two nodes on a full-duplex Ethernet physical link. By pausing and restarting data transmission, Ethernet flow control prevents buffers on the receiving nodes from overflowing and dropping data packets. An Ethernet PAUSE frame may be used to temporarily stop data transmission. PAUSE frames can be sent in both directions on the link. The receiver will transmit a PAUSE frame to the sender instructing it to stop sending more traffic. On the other side, the sender will respond to the PAUSE frame and stop sending traffic.
In the example above, one or more distributed deadlocks may occur due to transient routing loops in the network and may cause PAUSE frames to propagate throughout. Once the PAUSE frames begin to propagate, the entire network may be at risk to a permanent pause. One example of a deadlock prevention technique may be the “Banker's algorithm.” However, the Banker's algorithm does not account for or prevent software bugs that may persist on the network devices. Another reason of permanent pause may be faulty hardware, which may send PAUSE frames to various network components for an indefinite period of time despite not receiving any data from those network components.